package com.yuand.entity;

import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.TableField;
import java.io.Serializable;
import java.util.Date;

import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * <p>
 * 角色表
 * </p>
 *
 * @author yuandong
 * @since 2022-01-14
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("sys_role")
public class SysRole extends BaseEntity {

    private static final long serialVersionUID = 1L;

    public SysRole(){}

    //一个参数的构造，在判断角色是否是管理员角色的时候使用
    public SysRole(Long roleId){
        this.roleId= roleId;
    }

    @TableId(value = "role_id", type = IdType.AUTO)
    private Long roleId;

    @TableField("role_name")
    private String roleName;

    /**
     * 角色权限字符串
     */
    @TableField("role_code")
    private String roleCode;

    /**
     * 角色状态（0正常 1停用）
     */
    @TableField("status")
    private String status;

    /**
     * del_flag
     */
    @TableField("del_flag")
    private String delFlag;


    //辅助字段
    /**
     * 菜单组
     */
    @TableField(exist = false)
    private Long[] menuIds;

    /**
     * 角色是否选中的标识 默认false 未选中
     */
    @TableField(exist = false)
    private boolean flag;


    /**
     * 判断角色是否是超管角色，这个方法其实是一个傀儡，真正调用的是下面的静态方法
     * @return
     */
    public boolean isAdmin(){
        return isAdmin(this.roleId);
    }

    /**
     * 这个才是真正执行的方法，并且是静态的
     * @param roleId
     * @return
     */
    public static boolean isAdmin(Long roleId){
        return roleId != null && 1L == roleId;
    }





}
